// utils/date.js
export function formatDate(val) {
  if (!val) return val;

  // 如果输入是字符串格式 "yyyy-MM-dd HH:mm" 或类似
  if (typeof val === 'string' && /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}$/.test(val)) {
    // 补充秒部分，转换为 ISO-8601 格式
    return val.replace(' ', 'T') + ':00';
  }

  // 如果输入是时间戳（10位或13位）
  if (typeof val === 'number' || !isNaN(Number(val))) {
    const date = new Date(Number(val) * (val.toString().length === 10 ? 1000 : 1));
    const Y = date.getFullYear() + '-';
    const M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
    const D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + 'T';
    const h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
    const m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':';
    const s = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds());
    return Y + M + D + h + m + s;
  }

  // 如果输入是 Date 对象
  if (val instanceof Date) {
    const Y = val.getFullYear() + '-';
    const M = (val.getMonth() + 1 < 10 ? '0' + (val.getMonth() + 1) : val.getMonth() + 1) + '-';
    const D = (val.getDate() < 10 ? '0' + val.getDate() : val.getDate()) + 'T';
    const h = (val.getHours() < 10 ? '0' + val.getHours() : val.getHours()) + ':';
    const m = (val.getMinutes() < 10 ? '0' + val.getMinutes() : val.getMinutes()) + ':';
    const s = (val.getSeconds() < 10 ? '0' + val.getSeconds() : val.getSeconds());
    return Y + M + D + h + m + s;
  }

  // 其他情况返回原值
  return val;
}